package _1_初级._2_字符串.反转字符串;

import com.alibaba.fastjson.JSON;

public class _557_反转字符串3 {

    /**
     * 给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
     *
     * 示例 1:
     *
     * 输入: "Let's take LeetCode contest"
     * 输出: "s'teL ekat edoCteeL tsetnoc" 
     * 注意：在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
     *
     */

    public static String reverseWords(String s) {

        char[] charArray = s.toCharArray();

        int left = 0;
        int right = 0;
        char temp;

        for(int i = 0; i < charArray.length; i++){

            if(charArray[i] == ' ' || i == charArray.length - 1){
                if(charArray[i] == ' ') {
                    right = i - 1;
                }else if(i == charArray.length - 1){
                    right = i;
                }

                while(left < right){
                    temp = charArray[right];
                    charArray[right] = charArray[left];
                    charArray[left] = temp;
                    left++;
                    right--;
                }
                left = i + 1;
            }
        }
        return new String(charArray);
    }

    public static void main(String[] args) {
        String s = "Let's take LeetCode contest";
        System.out.println(JSON.toJSONString(reverseWords(s)));
    }
}
